﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Sistema_Totem.Acceso_a_Datos.DAOS;
using Sistema_Totem.Acceso_a_Datos.IDAOS;

namespace Sistema_Totem.Acceso_a_Datos.FabricaDAOS
{
    public abstract class FabricaDAO
    {
        public FabricaDAO()
        { }

        public static FabricaDAO CrearFabricaDeDAO(int tipoFabrica)
        {
            switch (tipoFabrica)
            {
                case 1:
                    return FabricaDAOSQLServer.getInstacia();
                case 2:
                    //return FabricaDAOOracle.getInstancia();
                default:
                    return null;
            }
        }

        public abstract iDAOCliente CrearDAOCliente();

        public abstract iDAODocumentoCasoDeUso CrearDAODocumentoCasoDeUso();

        public abstract iDAODocumentoERS CrearDAODocumentoERS();

        public abstract iDAODocumentoMinuta CrearDAODocumentoMinuta();

        public abstract iDAODocumentoPropuesta CrearDAODocumentoPropuesta();

        #region Interfaz Requerimiento

        /// <summary>
        /// Creación de la Interfaz para Acceder a las funciones
        /// del Requerimiento.
        /// </summary>
        /// <returns></returns>
        public abstract iDAODocumentoRequerimiento 
            CrearDAODocumentoRequerimiento();

        #endregion Interfaz Requerimiento

        public abstract iDAOPlantilla CrearDAOPlantilla();

        public abstract iDAOInvolucrado CrearDAOInvolucrado();

        public abstract iDAOProyecto CrearDAOProyecto();

        public abstract iDAORol CrearDAORol();

        public abstract iDAOUsuario CrearDAOUsuario();
    }
}